{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# k 均值聚类教程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 0. 依赖"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# 调用sklearn中的方法直接生成数据\n",
    "from sklearn.datasets.samples_generator import make_blobs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 数据加载和预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x, y = make_blobs(n_samples=100, centers=6, random_state=1234, cluster_std=0.6)\n",
    "#print(x,y)\n",
    "plt.figure(figsize=(6,6))\n",
    "plt.scatter(x[:,0],x[:,1],c=y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 算法实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# scipy导入计算距离的方法\n",
    "from scipy.spatial.distance import cdist\n",
    "\n",
    "class K_Means():\n",
    "    # 初始化，参数k、迭代次数、初始中心点\n",
    "    def __init__(self, k_cluster=4, max_iter=1000, centroids=[]):\n",
    "        self.k_cluster = k_cluster\n",
    "        self.max_iter = max_iter\n",
    "        # 将python的数组类型转换成numpy.array\n",
    "        self.centroids = np.array(centroids, dtype=np.float)\n",
    "    \n",
    "    def fit(self,data):\n",
    "        # 如果没有质心点，在data中随机选取作为初始质心点\n",
    "        if(self.centroids.shape==(0,)):\n",
    "            self.centroids = data[np.random.randint(0,data.shape[0],self.k_cluster),:]\n",
    "            \n",
    "        for i in range(self.max_iter):\n",
    "            # 计算距离矩阵，记录所有数据点和所有中心点的距离，算出来一个100*6的矩阵\n",
    "            distances = cdist(data, self.centroids)\n",
    "            \n",
    "            # 选取距离最近的centroids质心，做分类\n",
    "            c_index = np.argmin(distances, axis=1)\n",
    "            \n",
    "            # 计算每类数据的均值，就是分类之后新的质心\n",
    "            for i in range(self.k_cluster):\n",
    "                # 只对有效的类别做计算\n",
    "                if i in c_index:\n",
    "                    # 计算横轴和纵轴的平均值，为新的质心\n",
    "                    self.centroids[i] = np.mean(data[c_index==i],axis=0)\n",
    "    \n",
    "    def predict(self, test):\n",
    "        distances = cdist(test, self.centroids)\n",
    "            \n",
    "        # 选取距离最近的中心点，做分类\n",
    "        c_index = np.argmin(distances, axis=1)\n",
    "        return c_index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x123b22f90>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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gfHs1CSbN03Dsl/7s9lVAl3/ht1wKQnZXPZzjGfnbd+u8WHLroONvyMhm4sGbtWUbSIi2aQGNIeMqwQCk9K/Xd8+0OstCL0Kts6ZgsXdu93bdRX/GFs0DBt80JkfzTcBEzjBaXpFREQKgHGVQuDk9G/Xtx/0ehMaXgUa4tncq93bdQWOw3pGYIP/gtga8B6MCRyPMf72Fy0ikgFqQAuUcQXAPzH92/Xs5IygKyIiIlvFuEqg+Kj0b9czEtPlhrRvV0QkE/QMqIiIiIiIiGSFGlARERERERHJCjWgIiIiIiIikhVqQEVERERERCQr1ICKiIiIiIhIVqgBFRERERERkaxQAyoiIiIiIiJZoQZUREREREREskINqIiIiIiIiGSFGlARERERERHJCjWgIiIiIiIikhVqQEVERERERCQr1ICKiIiIiIhIVqgBFRERERERkaxoVwNqjLnVGPO5MWaRMeZxY0zXdBUmIiIiW0/ZLCIiHVl7r4C+AIyy1o4BlgC/aX9JIiIi0g7KZhER6bDa1YBaa5+31kbiP74DDGx/SSIiIrKtlM0iItKRpfMZ0POBeS29aIyZYoxZYIxZsGbNmjTuVkRERFqgbBYRkQ6lqLUVjDEvAn1TvHS1tXZufJ2rgQjwYEvbsdbeBdwFMG7cOLtN1YqIiIiyWURE8larDai19tAtvW6MORc4GjjEWqvwEhERyTBls4iI5KtWG9AtMcYcCfwSOMhaG0xPSSIiIrKtlM0iItKRtfcZ0OlAGfCCMeYjY8w/0lCTiIiIbDtls4iIdFjtugJqrR2erkJERESk/ZTNIiLSkaVzFFwRERERERGRFqkBFRERERERkaxQAyoiIiIiIiJZoQZUREREREREskINqIiIiIiIiGSFGlARERERERHJCjWgIiIiIiIikhVqQEVERERERCQr1ICKiIiIiIhIVqgBFRERERERkaxQAyoiIiIiIiJZoQZUREREREREskINqIiIiIiIiGSFGlARERERERHJCjWgIiIiIiIikhVqQEVERERERCQr1ICKiIiIiIhIVqgBFRERERERkaxQAyoiIiIiIiJZoQZUREREREREskINqIiIiIiIiGSFGlARERERERHJCjWgIlLQ6sMRwtForssQERGROGVz51aU6wJERDLh8xVr+P2jL/D58tUYA4N7dKXY62G7Hl0554A9GDWw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\n",
      "text/plain": [
       "<Figure size 1152x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plotKMeans(x, y, centroids, subplot):\n",
    "    plt.subplot(subplot)\n",
    "    plt.scatter(x[:,0], x[:,1],c=y)\n",
    "    plt.scatter(centroids[:,0],centroids[:,1],s=100,c='r')\n",
    "\n",
    "kmeans = K_Means(centroids = np.array([[2,1],[2,2],[2,3],[2,4]]))\n",
    "\n",
    "plt.figure(figsize=(16,6))\n",
    "plotKMeans(x, y, kmeans.centroids, 121)\n",
    "\n",
    "# 开始聚类\n",
    "kmeans.fit(x)\n",
    "\n",
    "plotKMeans(x, y, kmeans.centroids, 122)\n",
    "\n",
    "# 做出预测\n",
    "x_new = np.array([[10,7],[0,0]])\n",
    "y_pred = kmeans.predict(x_new)\n",
    "\n",
    "print(y_pred)\n",
    "\n",
    "plt.scatter(x_new[:,0],x_new[:,1],s=100,c=\"black\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
